查看原文
其他

求职“笔试经”第十四弹:这道C语言数组题仅一半人答对?(华为硬件逻辑岗)

相量子 达尔闻说 2021-01-17

不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我!

本期要解析的四道题目主要涉及C语言相关的基础考点,上周共有150多位同学参与答题(查看答题结果>>)。从整体来说,同学们做的还是可以的,比之前几期的正确率要高,毕竟C语言是我们最常用的编程语言之一。

本篇解析完C语言题目之后,文末留下了华为硬件逻辑实习岗的最后4道和FPGA相关的题目,大家可以提前做一下。


达尔闻求职笔试经系列专注解析各大公司经典笔试题,希望帮助到更多求职人,欢迎大家投稿。目前笔试经固定在每周二更新,如果大家有其他需求,可以进入达尔闻求职微信交流群添加妮姐微信459888529,注明:求职。
华为硬件逻辑岗整套题目都解析完毕,我们会做一个对整套题型的分析,从全局把控告诉大家,针对笔试我们该复习哪些内容、如何准备。现在让我们一起来看看C语言题目的解析。
36(正确率67%下列描述中,不属于面向对象思想主要特征的是(   )。(华为硬件逻辑实习岗)
A 跨平台性            B 继承性
C 封装性               D 多态性
解析:本题目主要考察了对面向对象概念、特点的理解
编程方式有两种:面向过程编程(POP)和面向对象编程(OOP)。
我们可以任意选择一种方式来编写程序,但这这两种编程方式是有区别的。简单来说POPOOP之间的区别可以这样解释:POP可以编写一个简单的程序,但当程序变得更加复杂的时候,此时用POP将比较低效率,整个编程过程将更加艰难,花更多的时间debug等等。而在同样复杂度下,OOPPOP高效得多。在软件开发中,业界都遵循OOP原则,会让团队协作编程变得简单。同时,OOP具有较高的代码重用性。
从思维方式上来讲,是对现实问题的建模方式不同。POP把问题分解成一个个过程,一步步实现这些过程,问题就得到了解决。而OOP把问题看成一系列对象之间的交互,设计出这些对象以及对象之间的交互,问题就得到了解决。
从程序的本质上来讲,是对算法以及数据的重视程度的不同。程序的本质是算法和数据。POP重视算法,忽视数据。OOP编程侧重点在数据,对算法的重视程度不如面向过程编程。对数据的重视使面向对象编程具有封装性,继承性和多态性的特点,就是把所有的属性都放置在一个固定的地方,然后提供一个接口供你使用,而你只能够使用这些属性,而不用知道它们是如何的定义的,从而在各方面提高了编程的效率。
封装性:指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被封装在其内部。如果需要存取数据,可以通过对象提供的算法来进行操作,而无需知道对象内部的数据是如何表示和存储的。这种思想被称为信息隐藏。
继承性:指一种事物保留了另一种事物的全部特征,并且具有自身的独有特征。
多态性:指当多种事物继承自一种事物时,同一种操作在它们之间表现出不同的行为。

37(正确率76%如果有如下程序int a[5]={1, 2, 3, 4, 5}, *p=a; 则数值为4的表达式是(   )。(华为硬件逻辑实习岗)
A *(p+3)           B *p+=4
C p+3               D *p+4
解析:本题目主要考察了如何通过指针访问一维数组中的元素
这道题的正确率还是很高的,说明大家对这块内容掌握的不错。在做题目之前,大家对应该对指针和数组存在着怎样的关系都有所了解。学过C语言的同学都应该知道:一个变量的地址称为该变量的指针,而数组的名字代表的又是数组首元素的地址,这样我们就可以将指针和数组联系起来了,也就是数组名等同于指向数组首元素的指针,对应题干具体关系如下图所示:
下面我们对每个选项进行分析,然后再通过编译器进行验证。
A选项:根据上图的所表达的关系,我们可以知道*(p+3)符合题干的要求,是正确的选项。我们在CodeBlocks编译器上编写的代码和运行的结果如下:

B选项:*p+=4这个需要特别注意,首先我们要知道“*”表示的是指针的运算符,且优先级高于“+=”,所以*p+=4也可以写为(*p)+=4,即为(*p)=(*p)+4,*p的值为1,(*p)=(*p)+4=5。我们在CodeBlocks编译器上运行的结果如下:

C选项:p+3表示的是指针指向的地址空间,我们用这种方式最后得到的不是a[3]的值,而是指向a[3]这个空间的地址值,这个值是计算机自动分配的,具体的值我们也不知道是多少,只能通过编译器来查看。我们在CodeBlocks编译器上运行的结果如下:

D选项:*p+4和B项类似,“*”指针运算符的优先级高于“+”,所以*p+4也可以写为(*p)+4,结果为5。我们在CodeBlocks编译器上运行的结果如下:

38(正确率40%C语言中,实型常数是按(   )处理。(华为硬件逻辑实习岗)
A double            B long double
C 其他都不对       D float
解析:本题目主要考察了C语言中的数据类型

实型数据分为实型常量和实型变量,在计算机中的实型数以浮点形式表示。

实型常量既可以是实数,也可以是浮点数,如3.14159等。实型常数不分单、双精度,都按双精度double型处理。

实型变量分为单精度型(float)、双精度型(double)和长双精度型(long double)。

39(正确率52%下列定义不正确的是(   )(华为硬件逻辑实习岗)
A int *p, i;             B int i, *p=i;
C int i, *p;              D int *p=&i, i;
解析:本题目主要考察了指针变量定义的相关问题
A选定义了一个指向整型的变量的地址p和一个整型的变量i。这种定义是可以的。
B选定义了一个整型的变量i和一个指向整型的变量的地址p,且变量p的值初始化为变量i,p是多少要看i具体分配的空间所占用的地址。这种定义是可以的。
C选定义了一个整型的变量i和一个指向整型的变量的地址p。这种定义是可以的。
D选项定义了一个指向整型的变量的地址p,且变量p的值初始化为变量i的地址和一个整型的变量i,但问题是变量i在*p=&i之后被定义,此时会编译器会报出一个error:‘i’undeclared,需要把i的定义放到*p=&i之前,题目中的这种定义是不可以的。

下一期我们将对本套题的最后4道题,也是和FPGA相关的题目进行详细的解析,大家可以提前做一下。
END

目前,我们安排的是每周二更新求职笔试经系列,计划涵盖的公司包含:华为,京东,大疆,商汤,中兴,CVTE,AMD,海康威视,黑金,汇顶等。(会陆续补充)

达尔闻 求职“笔试经”系列:

第一弹:华为硬件逻辑岗

第二弹:海康威视硬件岗

第三弹:华为硬件逻辑岗

第四弹:华为硬件逻辑岗&通用硬件岗

第五弹:华为硬件逻辑岗&硬件通用岗

第六弹:华为硬件逻辑岗

第七弹:华为硬件逻辑岗

第八弹:大华嵌入式岗

第九弹:紫光展锐数字IC岗(编程题)

第十弹:华为硬件逻辑岗

第十一弹:华为硬件逻辑岗

第十二弹:华为硬件逻辑岗(模电与数电)

第十三弹:华为硬件逻辑岗(信号与处理)

达尔闻 求职“面试经”系列
从无人机爱好者到获得DJI大疆Offer
offer拿到手软,最后选华为!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存